Feedback priority modulation rate controller

ABSTRACT

Methods and devices for controlling and managing data flow and data transmission rates. A feedback mechanism is used in conjunction with measuring output transmission rates to control the input transmission rates, changing conditions can be accounted for an excess output transmission capacity can be shared among numerous input ports. Similarly, by using maximum and minimum rates which can be requested from an output port, minimum transmission rates can be guaranteed for high priority traffic while capping maximum output rates for low priority traffic. By combining the two ideas of feedback rate control and placing maximum requestable transmission rates, a more equitable output sharing mechanism arises. The measured output transmission rate is used to control and recalculate the maximum requestable output transmission rate for incoming flows, thereby allowing for changing network and data flow conditions.

This application relates to U.S. Provisional Patent Application60/265,105 filed Jan. 31, 2001.

FIELD OF INVENTION

This invention relates to flow control and resource allocation and, morespecifically, to networking technologies for managing data flow and dataflow rates in network switching devices.

BACKGROUND OF THE INVENTION

The world of computer and communications networking is continuallyevolving. More efficient and more effective devices and methods arebeing developed to overcome the bottlenecks in the network datapath.

One of the bottlenecks is the problem of oversubscription of resourcesin a network switch. Currently, network switches are implemented usingline cards with multiple ingress (input) and multiple egress (output)lines. Merging data flows from ingress lines to the egress linesrequires complex and sophisticated solutions to provide adequate serviceto the different data flows passing through the ingress lines. Achallenge to the egress data flow merging problem is that some flowspassing through the ingress/egress line card have minimum transmissionrequirements. As such, this traffic must be guaranteed a minimum amountof resources (e.g. transmission capacity and number of cells or DTUsrequired to transport the traffic).

There are currently a few solutions to this question of sharing linecapacity between multiple ingress lines. The first solution is that ofusing a switch fabric with an overspeed factor of N (ideal outputqueuing switch), in which N is the number of input line cards. Theseswitches have no input buffer and therefore the switch fabric is not abottleneck for these switches. However, a speedup of N is not feasiblefor high capacity switches.

A second solution is that of using simple high-speed switches with asmall speed up and using virtual output queues in the ingress linecards. These high-speed switch fabrics are intentionally simple andleave most of the work to the Traffic Management chips. Typically, theswitch fabrics uses certain forms of arbiters to resolve the conflictbetween the simultaneous requests for a destination port from multiplesource ports. Due to the high speed of such switches, typical arbiterimplementations provide relatively simple scheduling algorithms such asa hierarchy of strict priority among the classes and round robin amongthe ingress ports without awareness of the QOS provisioning of each linecard. Consequently, the bandwidth distribution among the source portsare dictated by the characteristics, rather than by the servicerequirements of each individual line cards. When the switch experiencestraffic oversubscription, the scheduling discipline of the switcharbiter will make the local traffic scheduling on the line cardineffective because the switch itself is the congestion point in thesystem.

A third solution involves using a central scheduler. Some switch fabricsuse a central scheduler that holds all the rate information of theegress line cards, and therefore could precisely distribute the egressbandwidth fairly between ingress line cards. Due to their complexitythese switches are not scalable and therefore cannot used in high speedand high port switches/routers. The central scheduler needs to maintaina global state information database for all traffic flows in the system.In a typical switch system with N ports, such state information is inthe order of N×N. Because of the N² context overhead such a solution isnot scalable.

A fourth solution involves managing the grant/request system between theingress and the egress. Essentially, the ingress requests resources fromthe egress to allow the incoming data through the ingress line to exitthrough the egress line. When required, the egress then grants theserequests and allows data to pass from the ingress to the egress. Somevirtual output queuing switches implement per class request grantprotocols. The Request messages are generated separately for each inputqueue and the egress port has a distributed scheduler that isresponsible for scheduling the requests for that particular port. Grantmessages are generated and sent back by the fabric to the ingress linecard, which then transmits a packet according to the input queueidentifier in the Grant message. This mechanism requires the switchfabric to have sufficient overspeed, dedicated channel or efficientsupport for variable size Request/Grant/Data messages. It also requiresthe egress port to implement a per input class scheduler. The overallcost and complexity of such switch fabric is high. There is no knownmechanism for scaling such switch fabric to Tera-bit speed.

Unfortunately, none of the above solutions provide the flexibilityrequired with a minimum of hardware/software. An ideal solution shouldprovide to each port/class output pair in a line card its assignedcommitted rate. Also, the solution should also be able to share extratransmission capacity (or bandwidth) between all line cards trough someweighting/sharing factor. The solution should require minimal hardwareand must only consume a small fraction of a switch fabric's resources.Any virtual output queuing switches must be supported and the solutionshould be designed to work on slow-changing traffic.

It should be noted that the term data transmission unit (DTU) will beused in a generic sense throughout this document to mean units throughwhich digital data is transmitted from one point in a network toanother. Thus, such units may take the form of packets, cells, frames,or any other unit as long as digital data is encapsulated within theunit. Thus, the term DTU is applicable to any and all packets and framesthat implement specific protocols, standards or transmission schemes. Itshould also be noted that the term digital data will be used throughoutthis document to encompass all manner of voice, multimedia content,video, binary data or any other form of data or information that hasbeen digitized and that is transmitted from one point in a network toanother as a payload of a data transmission unit.

For this document, the term “rate” is defined to mean amount of datatransmitted per unit time. Thus, any references to “transmission rate”is defined as how much data is transferred or transmitted for a givenamount of time. “Rate” is not to be taken to mean the speed or velocityat which data travels through a transmission medium.

SUMMARY OF THE INVENTION

The present invention provides methods and devices for controlling andmanaging data flow and data transmission rates. A feedback mechanism isused in conjunction with measuring output transmission rates to controlthe input transmission rates, changing conditions can be accounted foran excess output transmission capacity can be shared among numerousinput ports. Similarly, by using maximum and minimum rates which can berequested from an output port, minimum transmission rates can beguaranteed for high priority traffic while capping maximum output ratesfor low priority traffic. By combining the two ideas of feedback ratecontrol and placing maximum requestable transmission rates, a moreequitable output sharing mechanism arises. The measured outputtransmission rate is used to control and recalculate the maximumrequestable output transmission rate for incoming flows, therebyallowing for changing network and data flow conditions.

In a first aspect the present invention provides a method of controllinghow many data transmission units (DTUs) are processed by a device, thedevice processing both high priority DTUs and low priority DTUs, themethod comprising:

-   -   a) establishing a desired minimum number of DTUs processed in a        given time interval (MCR);    -   b) establishing a desired maximum number of DTUs processed in        the given time interval (PCR);    -   c) for high priority DTUs, requesting a maximum of MCR DTUs for        processing for every specific interval of time;    -   d) for low priority DTUs, requesting a maximum of (PCR−MCR) DTUs        for processing for every specific interval of time;    -   e) determining at an output stage of the device a number of DTUs        output by the device in a given amount of time;    -   f) transmitting the number determined in step e) to an input        stage of the device; and    -   g) changing a value of PCR based on the number determined in        step e).

In a second aspect the present invention provides a device for routingdata transmission units (DTUs) from a source to a destinationcomprising:

-   -   at least one input port for receiving incoming DTUs from the        source;    -   at least one output port for transmitting DTUs to the        destination;    -   a switch fabric for switching transmitting DTUs from one of the        at least one input port to one of the at least one output port;    -   a controller for controlling an input rate of the input port and        for controlling an output rate of the output port;    -   measurement means for measuring the output rate of the output        port, the measurement means transmitting the output rate to the        controller, wherein    -   the controller adjusts the input rate based on the output rate.

In a third aspect the present invention provides a method of allocatingresource units between high priority tasks and low priority tasks, themethod comprising:

-   -   a) establishing a desired minimum number of resource units (x)        to be allocated to a task;    -   b) establishing a desired maximum number of resource units (y)        to be allocated to a task;    -   c) establishing a first upper limit to resource units to be        requested for high priority tasks, the first upper limit being        equal to the desired minimum number of resource units (x); and    -   d) establishing a second upper limit to resource units to be        requested for low priority tasks, the second upper limit being        equal to the desired maximum number of resource units (y).

In a fourth aspect the present invention provides a method ofcontrolling a rate of input data flow into a device, the methodcomprising:

-   -   a) measuring a rate of output data flow from the device at an        output section of the device;    -   b) transmitting the rate of output data flow from the output        section to at least one input section; and c) adjusting a rate        of input data flow at the or each input section based on the        rate of output data flow.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the invention may be obtained by reading thedetailed description of the invention below, in conjunction with thefollowing drawings, in which:

FIG. 1 is a block diagram illustrating the concept behind the feedbackrate controller;

FIG. 1A is a block diagram illustrating a system similar to thatillustrated in FIG. 1 but with multiple output ports and multiplecontrollers;

FIG. 2 is a block diagram illustrating an implementation of a path-basedmulticast of a token distributing the different output transmissionrates for a multiple line card system;

FIG. 3 is a block diagram of a possible format for a token which may beused for the system illustrated in FIG. 2;

FIG. 4 is a block diagram of a module for implementing prioritymodulation;

FIG. 5 is a block diagram of an implementation of feedback prioritymodulation;

FIG. 6 is a block diagram of an example of circuitry and data flow at anoutput port for implementing feedback priority modulation;

FIG. 7 is a flowchart detailing the steps executed in implementing afeedback rate controller;

FIG. 8 is a flowchart detailing the steps executed in implementingpriority modulation; and

FIG. 9 is a flowchart detailing the steps executed in implementingfeedback priority modulation.

DETAILED DESCRIPTION

The solution presented, a feedback priority modulation rate controller,will have two main components: a feedback rate controller and a prioritymodulation section. Each of these will be discussed in turn.

Feedback Rate Controller

The basic concept behind the feedback rate controller is illustrated inFIG. 1. A number of inputs 10 receive and forward data traffic fromdifferent data flows 20 into a switch fabric 30. The switch fabric 30routes the data traffic to an output port 40 that transmits the datatraffic to its next destination. The amount of data traffic that passesthrough the output port 40 is measured by a measuring device 50 at fixedintervals. This data traffic rate (amount of data traffic passingthrough the output port during a given time interval) is thentransmitted to a controller 60. Based on this data traffic rate, thecontroller 60 adjusts the amount of data traffic forwarded by the inputs10 to the switch fabric 30.

In conventional systems, the data traffic transiting through theinput/output ports of a line card (also normally termed as theingress/egress ports) is encapsulated in fixed sized data transmissionunits (DTUs). In most cases, these DTUs take the form of cells. However,throughout this document, such encapsulation will be referred to as datatransmission units.

The system illustrated in FIG. 1 controls the amount of data traffictransiting from the input port to the output port by controlling thenumber of DTUs passing through a given input port in a given amount oftime. Thus, as an example, if the data traffic passing through theoutput port 40 is 100 DTUs every 10 ns, this transmission rate causes acorresponding action to occur at the input port. Each measured outputtransmission rate has a corresponding input transmission rate.

It should be noted that while FIG. 1 illustrates a single output port40, the principles above can be applied to multiple parallel outputports being shared by multiple input ports.

Such a system is illustrated in FIG. 1A. As can be in FIG. 1A, multipleoutput ports 40A, 40B, 40C are shared by input ports 10A, 10B, 10C, 10Dand 10E. Each input port 10A–10E is provided with a dedicated controller60A, 60B, 60C, 60D AND 60E. Each controller is fed information regardinga measured output transmission rate from the measurement devices 50A,50B, 50C. Each input port 10A–10E has a different data flow 20A, 20B,20C, 20D, 20E. The switch fabric 30 routes data flow from one input portto one of the output ports in a well known manner. It should be notedthat multiple data flows can enter an input port. As shown in FIG. 1A,input port 10E receive multiple data flows with input port 10A receivingdata flows 20A and 20A-1 input port 10B receiving data flows 20B and20B-1, and so on. While the controllers 60A–60E are each dedicated to asingle input port, each of these controllers separately manage the inputrate of the separate data flows being received by their correspondinginput port. As such, controller 60E manages the input rate of data flows20E, 20E-1, and 20E-2 separately. Thus, data flow 20E may have an inputrate separate and independent from the input rate of data flows 20E-1and 20E-2. Equally, controller 60A manages the input rate of data flow20A separately from the input rate of data flow 20A-1. To reiterate,data input rate is controlled on a per data flow basis and not on a perinput port basis.

The system illustrated in FIG. 1A can implement virtual output queueing.With virtual output queueing each input port can have N virtual outputqueues corresponding to the N possible output ports. Each queue isseparately managed by at least one rate controller or each of the queuesfor an input port is managed separately by a single rate controller.Essentially, if an input port has N queues, then the rate controllerdedicated to that input port must manage each of those queuesseparately. Alternatively, for an input port with N virtual outputqueues corresponding to N possible output ports the input port can haveN rate controllers. While FIG. 1A illustrates a single rate controllerper input port, each controller block 60A–60E can represent either asingle rate controller that manages multiple queue simultaneously, or itcan represent multiple rate controllers per controller block with eachrate controller managing a separate data flow. It should also be notedthat the multiple data flows entering an input port is usuallymultiplexed onto a single input line into the input port.

For further clarification, it should be clear that any one of the dataflows being received by the input ports can be routed to any one of theoutput ports. Thus, data flow 20E-1 can be routed to any one of outputports 40A, 40B, 40C. Similarly, data flow 20D can be routed to any ofthe output ports 40A, 40B, 40C.

To improve fair sharing between the multiple input ports 10 and betweenthe different data flows 20A–20F, a sharing factor can be included inthe system.

The sharing factor is a weight by which the data traffic rate measuredat the output port 40 is multiplied. The value resulting from thismultiplication can then be added to a fixed transmission rate for aspecific one of the input ports 10. The final value from thiscalculation determines the resulting transmission rate for the specificinput port. The formula is as follows:Resulting input transmission rate=(measured output transmissionrate)×sharing factor+fixed transmission rate.Thus, an increase in the measured output transmission rate results in anincreased resulting input transmission rate for the input port.

By using such a system, regardless of the output transmission ratemeasured at the output port, each input port is guaranteed a minimuminput transmission rate equal to the fixed transmission rate representedin the equation above. This fixed transmission rate may be different foreach different input port. The effect of the measured outputtransmission rate on the resulting input transmission rare is controlledby the sharing factor. As such, if a system designer did not want aspecific input port to be too susceptible to changes in the measuredoutput transmission rate, then the system designer merely has to use asmall value for that input port's sharing factor. Conversely, if thesystem designer wanted an input port that closely followed the changesin the transmission capacities of the output port, then for that inputport, the sharing factor would have a large value.

The system illustrated in FIG. 1 controls the resulting inputtransmission rate by sending control signals from the controller 60 toeach of the input ports 10. Each control signal determines the inputtransmission rate for a particular input port and each control signal isdetermined by the calculation and the factors outlined above.

To assist in the management of the system in FIG. 1, the outputtransmission rate is only measured at specific time intervals. Becauseof this, any changes to the input transmission rates are onlyimplemented at discrete instances-the controller 60 only sends controlsignals to the input ports at specific times.

The above concepts can be applied to multiple output ports by havingeach output port contribute to an input port's overall resulting inputtransmission rate. This can be expressed mathematically for n outputports as:

${RTR}_{j} = {\left\lbrack {\sum\limits_{i = 0}^{n}\;\left( {{SH}_{i} \times {MOTR}_{i}} \right)} \right\rbrack + {FTR}_{j}}$where

-   -   RTR_(j)=resulting transmission rate for input port j;    -   SH_(i)=sharing factor for output port i    -   MOTR_(i)=measured output transmission rate for output port i    -   FTR_(j)=fixed transmission rate for input port

As can be seen, each input port can have a different fixed transmissionrate (the minimum guaranteed rate for the input port) and a differentsharing factor for different output ports. It should be noted that whilethe equation notes a contribution from each output port, by controllingthe sharing factor (e.g. setting a specific sharing factor to 0), thecontribution from any output port can be minimized or even eliminated.

What the system outlined above essentially implements is a method ofsharing excess output transmission capacity among multiple input portsor among multiple data flows. Each input port is guaranteed a minimuminput transmission rate and any excess input transmission capacity iscontrolled by the sharing factors(s). The higher a sharing factor is fora specific input/output port pair, the greater excess transmissioncapacity is allocated to the input port.

To prevent the system from being overburdened, the utilized transmissioncapacity of the output port 40 is ideally kept at a specified value orto within a specified range. The utilized transmission capacity of anoutput port is simply how much of the transmission capacity of theoutput port is actively utilized. As an example, if the output port iscapable of transmitting 100 DTUs/ms and the output port is onlytransmitting 60 DTUs/ms, then the utilized transmission capacity is 60%.This means that the output transmission rate of this output port can, ifdesired, be increased by an extra 40 DTUs/ms. Ideally, to maximize theoutput port usage, the utilized transmission capacity is targeted atclose to 99%. To control this utilized transmission capacity for anoutput port, the controller 60 may adjust the measured outputtransmission rate for that output port. To increase the utilizedtransmission capacity, the controller 60 may increase the measuredoutput transmission rate that is used in calculating an input port'sresulting transmission rate. Conversely, to reduce the utilizedtransmission capacity for an output port, the controller 60 may reducethe measured output transmission rate for an output port prior tocalculating an input port's resulting transmission rate.

The system in FIG. 1 and its control method as can be seen as a steadystate system when the input transmission rates and the outputtransmission rates are substantially fixed or when no perturbations areintroduced. When perturbations or disturbances are introduced into thesteady state system, such as an increased load due to the switch fabricor due to a new input port, the controller can dynamically manipulatethe measured output transmission rate to control the input transmissionrates of the input ports and the output transmission rates of the outputports. By manipulating this variable, the controller can stabilize thesystem to reach a new steady state of equilibrium that takes intoaccount the introduced perturbation or disturbance.

Ideally, the system in FIG. 1 will have a number of features which willhelp in both efficiency and implementation. If the switch core isprovided with a small speedup factor (e.g 1.05) this will assist intolerating temporary oversubscription of resources during transitionalstates. Also, aiming for a utilized transmission capacity of about 99%for an output port ensures high port utilization while keeping theoutput port DTU queue depth low. If a 100% utilized transmissioncapacity is aimed for, an infinite DTU queue depth is required to avoiddropping DTUs. Finally, measuring the output transmission rate andadjusting the input transmission rates based on these measurements areideally conducted at discrete, fixed time intervals and should only beaccomplished in a given fixed time window.

The sharing factor for each of the input ports can be iterativelycalculated based on how much of the transmission capacity of an outputport is being used. This can easily be found by determining the fulloutput transmission capacity of an output port and how much of this isbeing used. As noted above, if an output port is capable of transmitting100 DTUs/ms but is only transmitting 30 DTUs/ms, then the utilizedtransmission capacity is 60%. The sharing factor can be calculated foreach discrete time interval using the iteratively executing thefollowing pseudo-code:

-   -   Error=(Actual Utilized Transmission Capacity −Desired Utilized        Transmission Capacity)    -   1₁₃ Error−I_Error+Error    -   D_Error=Error _Last_Error    -   Last_Error=Error

$\left. {{SharingFactor} = {{Kp}*\left( {{Error} + {\left( \frac{1}{Ti} \right)*{I\_ Error}} + {*{D\_ Error}}} \right)}} \right)$where

-   -   Kp=proportional gain factor    -   Ti=integral time factor    -   Td=differential time factor

As can be seen, in this scenario the sharing factor is dependent on howdifferent the actual utilized transmission capacity is from the desiredutilized transmission capacity. The Kp, Ti, and Td factors correspond,respectively, to the proportional, integral, and derivative componentsof the error. The parameters can be adjusted according to applicationrequriements with regard to stability and transient performance of thesystem.

It should be noted, however, that other control functions can be sued todetermine the sharing factor from the utilized transmission capacity.

In terms of implementing the system of FIG. 1 for multiple output ports,a path-based multicast of a token containing the different outputtransmission rates can be used. For such an implementation, multiplecontrollers, each dedicated to a single output port, is envisioned (seeFIG. 2). As can be seen in FIG. 2, each line card 70A, 70B, 70C, 70D isequipped with an input port 40A, 40B, 40C, 40D respectively a controller60A, 60B, 60C, 60D controlling a corresponding input port, and an outputport 40A, 40B, 40C, 40D. In this implementation, each line card 70A,70B, 70C, 70D is equipped with the capability of measuring the outputtransmission rate for its corresponding output port. The switch fabric30 is capable of switching any of the input ports to any of the outputports.

To implement the above-mentioned path based multicast of a token, atoken is generated and is passed sequentially to each line card. Arrows80 in FIG. 2 illustrate the path that the token would take as it issequentially passed from line card to line card. As the token passesthrough a line card, the line card inserts-in a specific section of thetoken the output transmission rate for that line card's output port.Simultaneous to this, the controller on the line card can read theoutput transmission rate of the other line cards and can use this datato adjust/control the input transmission rate for its own input port.

FIG. 3 illustrates one possible implementation of the token. The token90 is divided into sections 100A, 100B . . . 100N, each of which cancontain a measured output transmission rate for a specific output port.Thus, RATE A can correspond to the output transmission rate of outputport 40A, RATE B can correspond to the output transmission rate foroutput port 40B and so on.

To ensure that the token is delivered in a timely manner, the token maybe passed from line card to line card using the highest priorityqueue/protocol. As such, the token will be accorded the highest prioritytraffic status and will therefore be guaranteed to be passed to the nextline card.

Priority Modulation

The priority modulation section allows high priority traffic to beguaranteed its minimum guaranteed output transmission rate while, at thesame time, allowing low priority traffic access to extra transmissioncapacity. The priority modulation section works mostly on system whichuse the request/grant protocol. In this protocol, input ports requesttransmission capacity from an output port and, based on the grantingmethod, the output port may grant the request or a portion thereof. Asan example, an input port may request an output transmission rate of 55DTUs/ms from an output port capable of transmitting at 100 DTUs/ms. Theoutput port may then grant the requesting input port a rate of 30DTUs/ms for that specific input port's traffic. Thus, the traffic fromthat input port would be able to exit the system through the output portat an output transmission rate of 30 DTUs/ms. The other 70 DTUs/mstransmission capacity of the output port can further be allocated toother input ports. The same grant/request protocol is also used inallocating transmission capacity to different classes of data traffictransmitting through a line card.

The priority modulation section operates by placing a cap on the maximumtransmission rate that may be requested from an output port by aparticular input port or class of data flow. A maximum requestabletransmission rate is imposed on both high priority traffic and lowpriority traffic. These two priority classes are used as they comprisethe switch priority classes. If MCR is defined as the minimum cell rateor minimum transmission rate that a specific input port or service classrequires and if PCR is defined as the peak cell rate or maximumtransmission rate for an output port, then these two values can be usedas maximums for output transmission capacities requested by an inputport.

The MCR is used as the maximum output transmission capacity that inputport/class can request for high priority traffic. Similarly, (PCR−MCR)is used as the maximum output transmission capacity that an inputport/class can request for low priority traffic. Thus, the sum total ofall transmission rates requested by an input port for high prioritytraffic cannot exceed MCR. Equally, the sum total of all transmissionrates requested by an input port for low priority traffic cannot exceed(PCR−MCR). By providing such caps on the transmission rates that can berequested, the priority modulation section guarantees high prioritytraffic its minimum required transmission rate (MCR) while capping themaximum rate (PCR) that can be requested and granted for low prioritytraffic. Thus, if a data flow/input port has high priority traffic thatrequires a rate of 30 DTUs/ms and MCR is set at 40 DTUs/ms then theinput port can request this rate for its high priority traffic.Similarly, if MCR is set at 40 DTUs/ms and an input port has two highpriority data flows each requiring 25 DTUs/ms, then the most that theinput port can request is 40 DTUs/ms for its high priority traffic. Forlow priority traffic a similar logic, but with different maximums,applies. The maximum aggregate rate that low priority traffic canrequest is determined by the expression PCR−MCR. Thus, if PCR=100DTUs/ms and MCR=40 DTUs/ms, then the maximum requestable rate for lowpriority traffic is PCR−MCR=100−40 =60 DTUs/ms. Based on this, if, forone input port, a first low priority data flow needs 30 DTUs/ms a secondlow priority data flow needs 25 DTUs/ms and a third low priority dataflow needs 35 DTUs/ms for a total of 90 DTUs/ms, then the maximum thatcan be requested is 60 DTUs/ms to be distributed among the 3 lowpriority data flows.

Referring to FIG. 4, a block diagram of a module 110 for implementingpriority modulation is illustrated. Incoming DTUs are received at aninput 120 and these incoming DTUs are placed in queue 130 according tothe class of the DTUs. The length of the queues 130 are transmitted to arequest shaper 140 and-to an input module 150. The input module 150regulates the acceptance and, therefore, the input flow of the incomingDTUs. While the request shaper 140 determines how much resources DTUs.The request shaper 140 determines this by determining the queue depthsin the queues 130 and by determining the minimum cell rate (MCR) 160 andthe peak cell rate (PCR) 170. The MCR 160 is the minimum flow rate forthe system and the PCR 170 is the maximum flow rate for the system asexplained above. Once the request shaper 140 determines the requestlevels, a request 180 for resources for high priority flows and arequest 190 for resources for low priority flows is transmitted to aswitch fabric 200. The switch fabric transmits the request to an exitmodule and relays how much of the requested resources are granted. Thehigh priority granted resources 210 and low priority granted resources220 are received separately by the module 110.

These resources grants are received by a DTU fetch unit 230. The DTUfetch unit 230 communicates with the queues 130 and instructs the queues130 how many DTUs are to be transmitted for both high priority and lowpriority traffic. At the same time, the DTU fetch unit 230 also informsa credit unit 240 of the same information. The credit unit 240 keepstrack of what is requested (by communicating with the request shaper140) and what is granted. Once the queues 130 receive instructions onhow may DTUs to release for both high and low priority traffic, theseDTUs are released/transmitted to the switch fabric 200.

Feedback Priority Modulation

The feedback priority modulation module combines the principles of boththe feedback rate controller and priority modulation. Essentially,feedback priority modulation applies the concept of implementing maximumdata rates that can be requested while using the feedback ratecontroller to dynamically adjust the maximum allowable data transmissionrate for each data flow/class.

To implement feedback priority modulation, the output rate is measuredand transmitted to thee system input modules. Each of these system inputmodules, such as the module illustrate in FIG. 4, can then calculate themaximum output transmission rate that is available based on the systeminput module's sharing factor and the measured output rate. Thus, if asystem input module's sharing factor is 0.25 and the measured outputrate is 80 DTUs/ms, then the maximum output rate which the system inputmodule can hope to achieve is 0.25×80 DTUs/ms=20 DTUs/ms. The sharingfactor for an input module therefore determining how much of an outputport's capacity can be utilized by that system input module. As notedabove in the section dealing with the feedback rate controller, asharing factor need not be static-it may be rendered dynamic by changingsystem conditions and circumstances.

One aspect of the feedback priority modulation is the seemingly staticnature of the minimum transmission rate or the MCR in the previoussection. While the maximum transmission rate (PCR) is mutable due to thefluctuations in the measured output rate and a possibly changing sharingfactor, the MCR is set. By setting MCR to a set number, the highpriority traffic is guaranteed to always achieve its minimumtransmission rate as long as traffic is available. This feature ofpriority modulation is preserved in feedback priority modulation.

Referring to FIG. 5, a block diagram of an implementation of feedbackpriority modulation is illustrated. It should be noted that thereference numbers and functions of the blocks in FIG. 5 are identical tothose of FIG. 4. However, FIG. 5 differs from FIG. 4 in that afeedback/calculation block 250 is added. The feedback/calculation blockreceives the measured output rate from the output port or from multipleoutput ports. Based on these measured output rates and the sharingfactor(s) for the particular system input port, the maximum transmissionrate or PCR for the system input port is calculated. The calculatedvalue is then stored in the system input module and used in determiningresource requests.

Clearly, some circuitry is required at the output port to measure theoutput rate. FIG. 6 illustrates a block diagram of one implementation ofsuch circuitry. The outgoing high priority traffic 260 and the outgoinglow priority traffic are both measured using suitable rate measurementmeans 250 such as a counter. A register 290 samples the measured outputrate and this sampled rate is transmitted to the system input ports.

Ideally, the output rate measurement, sampling and feedback transmissionis performed at discrete time intervals with the time interval beingfairly lengthy relative to the transmission time for a DTU. Theassumption for this is that the traffic profile for a flow/class isfairly static and, if the profile changes, such changes occur slowlyover time. Thus, if the transmission time per DTU is measured in singledigit milliseconds, then any change in the traffic profile is expectedto occur over hundreds of milliseconds. As such the time intervalbetween rate measurement can be set to a value in the order of tens ofmilliseconds, if not hundreds of milliseconds.

Referring to FIGS. 7, 8, and 9, these figures are provided to assist inthe understanding of the invention and in the different processesoutlined above. FIGS. 7, 8, and 9 are flow charts for the feedback ratecontroller, priority modulation, and feedback priority modulationrespectively.

Referring to FIG. 7, a flow chart detailing the steps for the feedbackrate controller discussed above is illustrated. The process begins withstep 500, that of receiving incoming DTUs at the system input module.Step 510 transmits the received DTUs to an output port, and step 520measures the output rate at the output port. Step 530 transmits themeasured output rate to the system input port. The final step in thisprocess is step 540. In this step the input/reception rate for DTUs atthe system input port is modified based on the received measured outputrate. While the flowchart details modifying the input/reception rate forDTUs based merely on the measured output rate, it should be clear that,from the description above, other factors may be taken into account,when modifying the input/reception rate. Such factors can include themeasured output rate for multiple output ports, specific sharing factorsfor specific input ports, and any prevailing conditions in the system.

Referring to FIG. 8, a flow chart detailing the steps involved inpriority modulation is illustrated. The first step in this process isstep 550—determining a minimum required rate for high priority traffic(MCR). The minimum required rate for high priority traffic is theminimum transmission rate that high priority traffic should receive whenbeing output from the system. Step 560 determines the maximum allowablerate for any traffic (PCR). The maximum allowable rate is the maximumrate that any traffic, either high priority or low priority, shouldreceive when being output from the system. Step 570 requests a rate ofMCR as the maximum rate that can be requested for high priority traffic.By providing a cap to the maximum rate that can be requested for highpriority traffic, any high priority traffic as will be guaranteed therate of MCR. As long as the high priority traffic has enough traffic toprovide the rate of MCR, high priority traffic will be given the rate ofMCR. However, this does not mean that the maximum rate that the highpriority traffic can receive equates to a rate of MCR. It should benoted that the maximum MCR rate only applies to the rate that can berequested for high priority traffic. As an example, if MCR is equal to80 DTUs per ms, and a high priority traffic has enough to provide 100DTUs /ms, then high priority traffic can only request up to 80 DTUs perms. However, if there is extra transmission capacity available to thesystem, this extra transmission capacity can be allocated to the highpriority traffic such that the effective transmission rate for highpriority traffic becomes 100 DTUs per ms. The final step in this processis step 580. In this step a maximum of (PCR−MCR) rate is requested forlow priority traffic. Essentially, what this step does is to provide acap as to the maximum rate that can-be requested for a low prioritytraffic. Assuming that MCR is not equal to zero, low priority trafficcan never request as much as a rate equal to PCR for itself. The maximumthat low priority traffic can therefore request is PCR−MCR. However, aswith high priority traffic, the cap on the maximum requestable rate forlow priority traffic does not mean that low priority traffic cannotachieve rates higher than PCR−MCR. Essentially, low priority traffic canbe granted a maximum of PCR−MCR rate based on its request but, furthertransmission capacity can also be had if it is available and if thetraffic is available. Thus if PCR is equal to 100 DTUs per ms and MCR isequal to 30 DTUs per ms, then low priority traffic can only request amaximum rate of 70 DTUs per ms. Again, as explained above, this does notmean that a transmission rate of greater than 70 ms cannot be providedto low priority traffic. What this means is that the maximumtransmission rate low priority traffic can request is 70 DTUs per ms. Ifthe extra transmission capacity is available and if the enough lowpriority traffic is available then transmission rates greater than 70DTUs per ms can be provided to the low priority traffic.

Referring to FIG. 9 a flow chart detailing the steps in implementingfeedback priority modulation is illustrated. As can be seen, the stepsin FIG. 9 are merely a combination of the steps illustrated in FIGS. 7and 8. The process for FIG. 9 begins with step 590 receiving incomingDTUs at a system input module. Step 600 is determining a minimumrequired rate for high priority traffic or MCR. Step 610 is determiningthe maximum allowable rate for any traffic or what is referred to as PCRin FIG. 8 above. Step 620 then requests a maximum rate of MCR for highpriority traffic while step 630 is requesting a maximum of (PCR−MCR)rate for low priority traffic. As can be seen, step 600–630 are merelyreiterations of the steps in FIG. 8.

The next step in the process outlined above is step 640. In this step,the DTUs which were received in step 590 are transmitted to the outputport for eventual transmission to their final destination. Step 650 ismeasuring the output rate at the output port and step 660 is oftransmitting the measured output rate to the system input port. As canbe seen , step 640–660 are reiterations of some of the steps illustratedin FIG. 7 and explained above. However, the next step, step 670, iscalculating a new PCR based on the measured output rate and any sharingfactor for the system input port. It is in step 670 that the steps inFIG. 9 essentially differ from the steps in FIG. 7. In FIG. 7, the inputor the reception rate for the DTUs is modified based on the measuredoutput rate whereas in step 670 of FIG. 9, it is the PCR value ismodified. Step 680 is that of setting the new PCR value that wascalculated in step 670. After step 680, connector A illustrates that theflow is transferred to step 690-again receiving incoming DTUs. Afterre-executing step 630 and 640, the flow then transfers to step 700 whichdetermines whether it is time to measure the output rate. If it is notyet time to measure the output rate, then connector A notes that theflow returns to step 690 and that of receiving incoming DTUs. As can beseen, steps 690, 630, 640, and 700 comprise a loop that executes untilit is time to once again measure the output rate. As noted above, theoutput rate and any changes to the PCR are to be executed at discretetime intervals. At the end of such a time interval, the logic flow ofthe process breaks out of step 700 and is transferred to step 650. Thisstep measures the output rate of the output port. From step 650 to step680, any perturbations or changes in the system may be taken intoaccount by changes in the value of PCR. As such, steps 650–680 are onlyexecuted at discrete time intervals. At any other time, steps 690, 630,640 and 700 execute to receive the incoming DTUs and transmit then tothe output port. It should be noted that steps 590, 600, 610, and 620are merely set up steps executed when the system is initialized.

As can be seen, the steps in FIG. 9 differ from FIG. 7 and 8 in that, inFIG. 7 the input/reception rates for DTUs is modified at the end ofre-measuring of the output rate. In FIG. 9, it is not the input orreception rate that is amended or modified but rather it is the maximumoutput rate that is modified. Furthermore, the new PCR in step 670 ofFIG. 9 is calculated based on the measured output rate and any sharingfactors for the input port. This new PCR is then set for the next roundof incoming DTUs until the specified time interval elapses.

The systems outlined and discussed above can be implemented using acombination of both hardware and software. Specific hardware devices maybe tasked with any of the specific steps outlined above. Some of thesteps above can be implemented using a general purpose centralprocessing unit with appropriate software. Examples of what may beimplemented in software include, the calculations of the newinput/reception rates for DTUs for the feedback rate controller and thecalculation of the new value for PCR based on measured output rate andthe sharing factor for the feedback priority modulation. It should alsobe noted that the concepts illustrated for the feedback rate controllermay be applied to an implementation of the feedback priority modulation.Specifically, the concept of using a token that is sequentiallydistributed to different line cards to distribute the output rate ofdifferent output ports may also be implemented in conjunction withfeedback priority modulation.

A person understanding the above-described invention may now conceive ofalternative designs, using the principles described herein. All suchdesigns which fall within the scope of the claims appended hereto areconsidered to be part of the present invention.

1. A method of controlling how many data transmission units (DTUs) areprocessed by a device, the device processing both high priority DTUs andlow priority DTUs, the method comprising: a) establishing a desiredminimum number of DTUs processed in a given time interval (MCR); b)establishing a desired maximum number of DTUs processed in the giventime interval (PCR); c) for high priority DTUs, requesting a maximum ofMCR DTUs for processing for every specific interval of time; d) for lowpriority DTUs, requesting a maximum of (PCR−MCR) DTUs for processing forevery specific interval of time; e) determining at an output stage ofthe device a number of DTUs output by the device in a given amount oftime; f) transmitting the number determined in step e) to an input stageof the device; and g) changing a value of PCR based on the numberdetermined in step e).
 2. A method as in claim 1 wherein step f) isexecuted by distributing a token among multiple input stages, the tokencontaining data related to measured processing capacity the devices. 3.A method as in claim 1 wherein the processing executed by the device istransmitting DTUs from the input stage to the output stage.
 4. A methodas in claim 1 wherein the value of PCR is also based on a specificpredetermined sharing factor.
 5. A method as in claim 1 wherein step e)is repeated for multiple output stages.
 6. A method as in claim 5wherein step f) is executed by distributing a token among multiple inputstages, the token containing data related to the number of DTUs outputby the multiple output stages.
 7. A method as in claim 2 wherein thetaken is distributed among the multiple input stages using a highestpriority protocol.
 8. A method as in claim 7 wherein the token isdistributed among the multiple input stages using a highest priorityprotocol.
 9. A device for routing data transmission units (DTUs) from asource to a destination comprising: at least one input port forreceiving incoming DTUs from the source; at least one output port fortransmitting DTUs to the destination; a switch fabric for switchingtransmitting DTUs from one of the at least one input port to one of theat least one output port; a controller for controlling an input rate ofthe in put port and for controlling an output rate of the output port;measurement means for measuring the output rate of the output port, themeasurement means transmitting the output rate to the controller,wherein the controller adjusts the input rate based on the output rate.10. A device as in claim 9 wherein the controller further controls howmuch transmission capacity of the at least one output port is allocatedto data flow from any on the at least one input port.
 11. A device as inclaim 10 wherein the controller calculates and allocates outputtransmission capacity on the at least one output port between the atleast one input port based on how much output transmission capacity isrequested by any one of the at least one input port.
 12. A method ofallocating resource units between high priority tasks and low prioritytasks, the method comprising: a) establishing a desired minimum numberof resource units (x) to be allocated to a task; b) establishing adesired maximum number of resource units (y) to be allocated to a task;c) establishing a first upper limit to resource units to be requestedfor high priority tasks, the first upper limit being equal to thedesired minimum number of resource units (x); and d) establishing asecond upper limit to resource units to be requested for low prioritytasks, the second upper limit being equal to the desired maximum numberof resource units (y).
 13. A method as in claim 12 wherein the resourceunite are output data transmission rates.
 14. A method as in claim 12wherein the tasks are transmitting data transmission units (DTUs) from asource to a destination.
 15. A method as in claim 12 wherein the desiredmaximum number of resource units (x) is periodically changed based on ameasured indication relating to how many resource units are actuallyused in performing tasks.
 16. A method as in claim 15 wherein theresource units are output data transmission rates.
 17. A method as inclaim 16 wherein the tasks are transmitting data transmission units(DTUs) from a source to a destination.